void graph_traverse(Graph *G) {
    for (int i = 0; i < G.VerticesNum(); i++)
        G.Mark[i] =
            UNVISITED; // 检查图的所有顶点是否被标记过，如果没有则从未标记的顶点开始继续遍历
    for (int i = 0; i < G.VerticesNum(); i++)
        if (G.Mark[i] == UNVISITED)
            do_traverse(G, i);
}
